package javaweb.controller;

import javaweb.anno.Log;
import javaweb.pojo.Emp;
import javaweb.pojo.EmpQueryParam;
import javaweb.pojo.EmpPageResult;
import javaweb.pojo.Result;
import javaweb.sevice.ClazzService;
import javaweb.sevice.EmpService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/*
* 员工管理的控制端
* */

@Slf4j
@RequestMapping("/emps")
@RestController
public class EmpController {

    @Autowired
    private EmpService empService;

    @Autowired
    private ClazzService clazzService;

    /*
    * 分页查询操作
    * */
    @GetMapping
    public Result page(EmpQueryParam empQueryParam){

        log.info("分页查询的请求参数：{}", empQueryParam);
        EmpPageResult empPageResult =  empService.page(empQueryParam);
        return Result.success(empPageResult);
    }

    /*
    * 添加员工操作
    * @RequestBody - 将接受到的json格式封装成对象
    * */
    @Log
    @PostMapping
    public Result save(@RequestBody Emp emp){
        log.info("添加员工接收到的参数为：{}", emp);
        empService.save(emp);
        return Result.success();
    }

    /*
    * 批量删除员工操作
    * */
    @Log
    @DeleteMapping
    public Result delete(@RequestParam List<Integer> ids){
        log.info("删除的员工ID:{}", ids);
        empService.delete(ids);
        return Result.success();
    }

    /*
    * 查询回显操作
    * */
    @GetMapping("/{id}")
    public Result getInfoById(@PathVariable Integer id){
        log.info("查询回显的ID:{}", id);
        Emp emp = empService.getInfoById(id);
        return Result.success(emp);
    }

    /*
    * 修改员工信息操作
    * */
    @Log
    @PutMapping
    /*
    * @RequestBody 接收前端的json格式的信息封装成对象
    * */
    public Result update(@RequestBody Emp emp){
        log.info("修改员工的信息:{}", emp);
        empService.updateEmp(emp);
        return Result.success();
    }

    /*
    * 查询班主任（查询全部员工）
    * */
    @GetMapping("/list")
    public Result findMaster(){
        log.info("查询班主任：");
        List<Emp> list = clazzService.getMaster();
        return Result.success(list);
    }

}
